Many applications that execute on computing systems employ function calls to perform a variety of tasks. Functions may be written to handle anything from simple tasks like reformatting a string or performing a calculation to complex tasks such as retrieving data, transferring files, encrypting information, or creating a network connection. Typically, a function may only be visible to other code within the same application. However, some applications are designed to intercept calls to functions within other applications. Intercepted function calls can then be blocked or, in some cases, redirected to other functions that may perform the same task in different ways or may perform a different task entirely.
Traditional systems for intercepting function calls require the intercepting application to know the location of the function to be intercepted. Some traditional systems may perform an analysis of all possible code paths in a file in order to identify the locations of functions. Such an analysis may be lengthy and may also be costly in terms of computing resources. Additionally, traditional systems that analyze files to identify the locations of functions may have to perform a separate analysis of each new version of a file to determine whether the location of the function has changed in the new version and if so, what the new location of the function is. The instant disclosure, therefore, identifies and addresses a need for systems and methods for locating functions for later interception.